package com.yesep.learn.design.creational.singleton;

import com.sun.istack.internal.*;

/**
 * 枚举式单例模式是一种简单而强大的实现单例模式的方法，它利用了 Java 枚举类型的特性来保证单例的线程安全性以及防止反射和序列化的攻击。
 * Java 枚举类型本身就是线程安全的，并且保证每个枚举实例只被创建一次，因此非常适合用来实现单例模式。
 */
public enum EnumSingleton {
    INSTANCE;
    private EnumSingletonTarget target;

    EnumSingleton() {
        target = new EnumSingletonTarget();
    }

    public EnumSingletonTarget getTarget() {
        return target;
    }

    public static class EnumSingletonTarget {
        public void sayHello(@NotNull String... args) {
            for (String arg : args) {
                System.out.printf("Hello %s ", arg);
            }
        }
    }
}
